package com.wxc.impl;


import com.wxc.MySet;
import com.wxc.list.LinkList;

/**
 * @author wxc
 * @date 2021年08月16日 7:38 PM
 * 可以添加null
 */
public class ListSet<E> implements MySet<E> {

	LinkList<E> linkList = new LinkList<>();

	@Override
	public int size() {
		return linkList.size();
	}

	@Override
	public boolean isEmpty() {
		return linkList.isEmpty();
	}

	@Override
	public void clear() {
		linkList.clear();
	}

	@Override
	public boolean contains(E element) {
		return linkList.contains(element);
	}

	@Override
	public void add(E element) {
		// 不包含 添加
		if(!contains(element)) linkList.add(element);
		// 包含 覆盖
		else linkList.set(linkList.indexOf(element),element);
	}

	@Override
	public void remove(E element) {
		if(contains(element)) linkList.remove(linkList.indexOf(element));
	}

	@Override
	public void traversal(Visitor<E> visitor) {
		if (visitor == null) return;;
		int size = size();
		for (int i = 0; i < size; i++) {
			// 如果为true停止遍历
			if(visitor.visit(linkList.get(i))) return;
		}
	}
}
